//
//  IMFCMModels.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/6/23.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * FCM设备令牌上传请求模型
 */
@interface IMFCMRequest : NSObject

/**
 * 应用唯一ID（必选）
 */
@property (nonatomic, strong) NSString *app_id;

/**
 * 用户唯一ID（必选）
 */
@property (nonatomic, strong) NSString *uuid;

/**
 * 设备令牌（必选）
 */
@property (nonatomic, strong) NSString *fcm_token;

/**
 * 便利构造方法
 * @param appId 应用唯一ID
 * @param uuid 用户唯一ID
 * @param fcmToken 设备令牌
 */
+ (instancetype)requestWithAppId:(NSString *)appId 
                            uuid:(NSString *)uuid 
                        fcmToken:(NSString *)fcmToken;

/**
 * 转换为请求参数字典
 */
- (NSDictionary *)toDictionary;

@end

/**
 * FCM上传响应模型
 */
@interface IMFCMResponse : NSObject

/**
 * 响应状态码
 */
@property (nonatomic, assign) NSInteger code;

/**
 * 响应消息
 */
@property (nonatomic, strong) NSString *message;

/**
 * 响应数据（通常为null）
 */
@property (nonatomic, strong, nullable) id data;

/**
 * 追踪ID
 */
@property (nonatomic, strong, nullable) NSString *trace_id;

/**
 * 是否成功
 */
@property (nonatomic, assign, readonly) BOOL isSuccess;

/**
 * 从字典创建实例
 * @param dictionary 响应字典
 */
+ (instancetype)responseFromDictionary:(NSDictionary *)dictionary;

@end

NS_ASSUME_NONNULL_END